Networked computer systems are becoming increasingly popular as they permit different computers to share information. In many networks, some nodes play a very specific roll, that of file server. The concept of a file is universal in computer science, i.e., a named unit of data storage. Files have been the principle method for communication between programs and computer systems since the 1950's, but not without difficulty.
Typically, the files are organized in a specific fashion as dictated by the file system imposed upon the file server. To access a file, a requesting client must know the access protocols for that specific file system. If the client does not know the correct protocols, the files will be unavailable. For example, a Microsoft Windows™ workstation client understands FAT and NTFS file structures, but not UNIX. Access to UNIX files can be achieved, though it requires an additional application such as for example the open source application SAMBA which is capable of handling the necessary translations for file access.
Over the years, file servers based on standard protocols such as Network File System (NFS) and Common Internet File System (CIFS) have been adopted as the defacto standard for file service. Today, large organizations deploy numerous independent file server appliances to meet the huge increase in their storage demand. Unfortunately, in most situations such deployment is merely a stop-gap solution due to the single-server architecture of these popular protocols. This results in what is commonly termed ‘server sprawl’. Server sprawl is far from desirable as it forces organizations to manage independent storage islands at a high cost, limiting their flexibility to use the full capacity of existing storage resources, and creating bottlenecks and load imbalances.
Attempts have been made to harmonize the servers through virtualization schemes with varying degrees of success. The Mirage project from the University of Arizona has demonstrated an ability to enable a union of name spaces from multiple-file servers to present a single name space. However, this union of the name space does not support the migration of objects (files and directories) between multiple file servers.
Slice μ-proxy from Duke University is a request routing proxy implemented as a packet filter. It can implement a virtual NFS server by using a combination of specialized file servers and storage nodes, but cannot use existing NFS servers with modification. In addition, it supports request routing only and cannot support load balancing or dynamic file migration.
Commercial products also attempt to provide solutions, but they too have less than desirable success. Acopia and Rainfinity offer file virtualization switches. Acopia provides data location independence by storing and managing name spaces and metadata at a middle node (between the clients and the file servers) and treating the file servers as object stores. As file servers are designed to handle file transactions, shifting this responsibility to the middle node looses many optimizations that the file servers would otherwise provide. Further, the middle node is prone to bottleneck problems as more clients join the system and demand file access.
Rainfinity uses a hybrid out-of-band global namespace and an in-band switch-based (Layer-2) protocol processing that permits administrator controlled data migrations between the servers. The multiple protocols and administrator limited migration ability yields overhead and system constraints. As with Acopia, bottlenecking is also an issue.
File server caches and cache appliances introduced between clients and servers attempt to help resolve some client requests more quickly then others, but again do not achieve an overall virtualization of the discreet file servers, and bottlenecking can be an issue even with the cached data.
Moreover, attempts to collectively harmonize a plurality of server systems as a virtualized combined file server have a variety of shortcomings, including but not limited to, requiring modification of the server or client system, offloading server actions from the file servers to middle nodes with the sacrifice of file server optimization, achieving some name space unionization but without the ability to support data migration and load balancing, and providing a degree of file access virtualization but through the constraint of a single node subject to bottlenecking.
Hence, there is a need for a protocol virtualization system and method for a network file system that overcomes one or more of the drawbacks identified above.